<?php

if (! defined('BASEPATH'))
    exit('No direct script access allowed');
/**
 * 取数组$arr的键与$limits的值的交集
 *
 * @param
 *            $arr
 * @param
 *            $limits
 * @return array 返回$arr数组中的键在$limits的键值对数组
 */
if (! function_exists('array_key_intersect')) {

    /**
     * 方法 : array_key_intersect
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param $arr
     * @param $limits
     * @return array
     */
    function array_key_intersect($arr, $limits)
    {
        // 将values 转为 keys
        $limits = array_flip($limits);
        return array_intersect_key($arr, $limits);
    }
}
/**
 * 打印数组函数
 *
 * @param
 *            $arr
 */
if (! function_exists('p')) {

    /**
     * 方法 : p
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param $arr
     */
    function p($arr)
    {
        echo '<pre>';
        print_r($arr);
        echo '</pre>';
    }
}
if (! function_exists('v')) {

    /**
     * 方法 : v
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param $arr
     */
    function v($arr)
    {
        echo '<pre>';
        var_dump($arr);
        echo '</pre>';
    }
}
/**
 * 一维数组键值转换
 *
 * @param
 *            $arr
 */
if (! function_exists('key_exchange')) {

    /**
     * 方法 : key_exchange
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param $arr
     * @param string $key
     * @return array
     */
    function key_exchange($arr, $key = '')
    {
        $res = array();
        if ($key == '')
            foreach ($arr as $k => $v) {
                $value = array_values($v);
                $res[$value[0]] = $v;
            }
        else
            foreach ($arr as $k => $v) {
                $value = array_values($v);
                $res[$v[$key]] = $v;
            }
        return $res;
    }
}

if(!function_exists('error_redirect')){
    /**
     * 方法 : error_redirect错误跳转页
     * 使用方法:    return error_redirect('/home/index','发生了错误',10);
     * @User wuqin
     * @DateTime 2018-03-16 16:48
     * @param string $url
     * @param string $message
     * @param int $time
     * @return bool
     */
    function error_redirect($url ='/', $message='未知错误', $time = 3){
        $controller = new CI_Controller();
        $controller->load->view('error',array(
            'url' => $url,
            'message' => $message,
            'time' => $time
        ));
        return false;
    }
}

if (! function_exists('exit_json_array')) {

    /**
     * 方法 : exit_json_array
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param $errorCode
     * @param string $errorMessage
     * @param array $data
     */
    function exit_json_array($errorCode = 1, $errorMessage = '', $data = array())
    {
        header("Content-Type: application/json; charset=utf-8");
        exit(json_encode(array(
            'errorCode' => $errorCode,
            'errorMessage' => $errorMessage,
            'data' => $data
        ), JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));
    }
}

/**
 * 一维数组数据提取
 *
 * @param
 *            $arr
 */
if (! function_exists('array_value_one')) {

    /**
     * 方法 : array_value_one
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param $arr
     * @param string $key
     * @return array
     */
    function array_value_one($arr, $key = '')
    {
        if ($key == '')
            return $arr;
        $res = array();
        unset($v);
        foreach ($arr as $k => $v) {
            array_push($res, $v[$key]);
        }
        return $res;
    }
}
/**
 * 对象转为数组
 *
 * @param
 *            object
 */
if (! function_exists('object_to_array')) {

    /**
     * 方法 : object_to_array
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param $obj
     * @return array
     */
    function object_to_array($obj)
    {
        $ret = array();
        foreach ($obj as $key => $value) {
            if (gettype($value) == "array" || gettype($value) == "object") {
                $ret[$key] = object_to_array($value);
            } else {
                $ret[$key] = $value;
            }
        }
        return $ret;
    }
}
/**
 * 模板输出数组和字符串检查函数
 *
 * @param $data 被检测的数据
 * @param $flag 检测类型（str、arr）str字符串，arr数组，默认为数组
 * @param $default 默认值，该参数只对字符串有效
 */
if (! function_exists('echo_on_temp')) {

    /**
     * 方法 : echo_on_temp
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param $data
     * @param string $flag
     * @param string $default
     * @return bool|string
     */
    function echo_on_temp($data, $flag = 'str', $default = '')
    {
        switch ($flag) {
            case 'arr':
                if (isset($data) && is_array($data) && ! empty($data)) {
                    return true;
                } else {
                    return false;
                }
                break;

            case 'str':
            default:
                if (isset($data) && is_string($data) && $data != '') {
                    return $data;
                } else {
                    return $default;
                }
                break;
        }
    }
}

/**
 * post验证客户端登陆
 *
 * @author eason
 */
if (! function_exists('validate_client')) {

    /**
     * 方法 : validate_client
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param null $post
     * @return bool
     */
    function validate_client($post = null)
    {
        if (! $post) {
            return false;
        }
        $flag = false;
        if (isset($post['client']) && $post['client'] == true) {
            // 判断时间是否超时
            if (isset($post['time']) && $post['time'] + $this->config->item('client_expire') < time()) {
                $flag = true;
            } else {
                // 判断session_id 并获取session
                if (isset($post['session_id'])) {
                    session_start();
                    $_SESSION = session_id($post['session_id']);
                } else
                    $flag = true;
            }
        } else
            $flag = true;
        return $flag;
    }
}

/**
 * 取某值作为键名
 *
 * @param
 *            author Jerry
 */
if (! function_exists('value_as_key')) {

    /**
     * 方法 : value_as_key
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param $array
     * @param $value
     * @return array
     */
    function value_as_key($array, $value)
    {
        $arr = array();
        foreach ($array as $k => $v) {
            $arr[$v[$value]] = $v;
        }

        return $arr;
    }
}

/**
 * 返回json
 *
 * @author
 *
 */
if (! function_exists('exit_json')) {

    /**
     * 方法 : exit_json
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param string $code
     * @param string $msg
     * @param array $data
     * @param int $dev
     * @return bool
     */
    function exit_json($code = '', $msg = '', $data = array(), $dev = 0)
    {
        if ((strlen($code) | strlen($code)) == 0)
            return false;
        $return = array();
        $return = array(
            'errorCode' => $code,
            'errorMessage' => $msg
        );
        if (! empty($data))
            $return['data'] = $data;
        if ($dev)
            p($return);
        else
            exit(json_encode($return));
    }
}

/**
 * 特定返回的数组格式
 * errorCode 状态码
 * errorCode 错误信息
 * data      携带数据
 */
if(!function_exists('errorMsg')){
    /**
     * 方法 : errorMsg
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param string $errorCode
     * @param string $errorMessage
     * @param null $data
     * @return array
     */
    function errorMsg($errorCode='', $errorMessage='', $data=NULL){
        if( strlen($errorCode) == 0 )
            return array('errorCode'=>1,'errorMessage'=>'函数出错，参数[errorCode]不可为空');
        if( strlen($errorMessage) == 0 )
            return array('errorCode'=>1,'errorMessage'=>'函数出错，参数[errorMessage]不可为空');

        $return_array = array(
            'errorCode'    => $errorCode,
            'errorMessage' => $errorMessage
        );
        if($data===NUll) return $return_array;
        $return_array['data'] = $data;
        return $return_array;
    }
}


/**
 * 特定返回的数组格式
 * errorCode 状态码
 * errorCode 错误信息
 * data      携带数据
 */
if(!function_exists('exit_error')){
    /**
     * 方法 : exit_error
     * @User wuqin
     * @DateTime 2018-03-15 15:37
     * @param string $errorCode
     * @param string $errorMessage
     * @param null $data
     * @return array
     */
    function exit_error($errorCode='', $errorMessage='', $data=NULL){
        if( strlen($errorCode) == 0 )
            return array('errorCode'=>1,'errorMessage'=>'函数出错，参数[errorCode]不可为空');
        if( strlen($errorMessage) == 0 )
            return array('errorCode'=>1,'errorMessage'=>'函数出错，参数[errorMessage]不可为空');

        $return_array = array(
            'errorCode'    => $errorCode,
            'errorMessage' => $errorMessage
        );
        if($data===NUll) return $return_array;
        $return_array['data'] = $data;
        exit(json_encode($return_array));
    }
}
?>